r'''
使用拦栅密码加密消息
    1.写入明文
    2.删除明文中的空格并将字母全部转为大写
    3.堆叠重写消息(每个字母都在前一个字母的下面，并且字母之间都有一个空格)
    4.将第二行写在第一行的后面
    5.5个字母一组将得到的新消息再进行拆分

    以锯齿形的方式读取:
        \//\/\/\/\/\/\/
'''

plaintext = '''Let us cross over the river and rest under the shade of the trees'''

'''
步骤2
'''
def prep_plaintext(plaintext):
    message = ''.join(plaintext.split())
    message = message.upper()
    print('\n转换后的明文消息:{}'.format(message))
    return message

'''
按照消息中字母的奇偶个数建立两个字符串
'''
def build_rails(message):
    evens = message[::2] #取偶数位置字母
    odds = message[1::2] #取奇数位置(从下标1开始每隔两个元素取一个值，如[1 2 3 4 5 6]取得[2 4 6])
    rails = evens + odds
    return rails

'''
将密文按5个字母的组合进行拆分，再连接成心得字符串
'''
def encrypt(rails):
    ciphertext = ' '.join([rails[i:i+5] for i in range(0,len(rails),5)])
    print('\n得到加密消息:{}'.format(ciphertext))


def mian():
    message = prep_plaintext(plaintext)
    rails = build_rails(message)
    encrypt(rails)

if __name__ == '__main__':
    mian()